local voucherId = ARGV[1] -- 优惠券Id
local userId = ARGV[2] -- 用户Id
local orderId = ARGV[3] -- 订单Id

-- 2.数据key
-- 2.1.库存key
local stockKey = 'seckill:stock:' .. voucherId
-- 2.2.订单key
local orderKey = 'seckill:order:' .. voucherId

-- 3.根据库存Key 判断库存 1-不充足
if (tonumber(redis.call('get',stockKey)) <= 0) then
    return 1
end

-- 4.根据订单Key判断是否一人一单
if (redis.call('sismember',orderKey,userId) == 1) then
    return 2
end

-- 5.满足条件 扣减库存 并将该用户Id加入到订单集合中
redis.call('incrby',stockKey,-1)
redis.call('sadd',orderKey,userId)

-- 6.加入阻塞队列
redis.call('xadd','stream.orders','*','voucherId',voucherId,'userId',userId,'id',orderId);
return 0